type PropKeys = 'x' | 'y' | 'z'

type Type1 = { x: number; y: number; z: number }

// 第三行相当于 使用映射类型
// Key是占位符 说明的是 x、y、z均为number类型
/* 
  如果PropKeys = 'x' | 'y' | 'z' | 'q' | 'r', 
  那么第三行还需要加上 q:number 和 z:number 
  而使用映射则不需要改动了  
  注意：映射类型不能在 接口（interface） 中使用
*/
type Type2 = { [Key in PropKeys]: number }

// keyof的使用
type Props = { a: number; b: string; c: boolean }
// 相当于把 Props 的所有键名拿出来再从新赋上number的类型给Type3
type Type3 = { [key in keyof Props]: number }
